Field of the Invention
The present invention generally relates to computer software. More specifically, the present invention relates to a rendering application configured to steer a rendered character in real-time towards a goal location, where the animation frames are blended from a plurality of motion clips included in a behavioral motion space.
Description of the Related Art
The term rendering application refers to a broad variety of computer-based tools used by architects, engineers, animators, video game designers, and other graphics and design professionals. Rendering is the process of generating an image from a model by means of computer programs. A rendering application may be used to render animation frames of three-dimensional (3D) characters.
A common feature of rendering applications is the ability to generate frames of an animation sequence in real-time. For example, the motion of a video-game character moving from one location in a graphics scene to another may be generated on the fly based on a game player's interaction with the game. To create a motion sequence, users of a rendering application typically begin with one or more motion clips from which the motion sequence is created. Often, motion clips are created using a motion capture system. Typically, an actor wears markers near each joint to identify the motion by the positions or angles between the markers. The markers are then tracked to sub-millimeter positions. Motion capture computer software records the positions, angles, velocities, accelerations, and impulses, providing an accurate digital representation of the motion.
Similarly, many game products include goal-driven characters that are not controlled directly by the player of the game. In the video game industry, these are called “non-player characters” or “NPCs”. The most popular games (sports, role-playing, strategy, and first person shooters) make heavy use of NPCs to provide the key action elements in the game. Prior art techniques for controlling a non-player character's motion relied on “motion graphs”—networks of discrete motion clips with connected transitions that linearly blend from one clip into another clip. Motion transitions generated using motion graphs suffer from motion artifacts that cause the appearance of sliding, jumping, skipping, or other changes that look unnatural.
Creating game character motion that is engaging to game players and that appears realistic has proven to be difficult. Before this can happen, a game player must be able to see the character motion as being “alive” or “correct” without the mechanical motion artifacts that jar a player out of context. This problem of implausible motion is particularly apparent in animation sequences that show periodic motions, such as walking, running, or swimming. The problem is especially difficult when combining motion clips of different types of motion, i.e., blending a walking motion clip with a running motion clip, because characteristics of the motion (arm movements, stride length, etc.) vary based on the type of motion being performed.
A single looping motion space may be used to generate an arbitrary length animation sequence of a character performing a periodic motion. The single looping motion space may be used to create an animation of the character performing the periodic motion anywhere within the motion space, e.g., a character walking straight forward, walking while turning sharply to the left or right, or walking anywhere in between. Additionally, the motion space may be used to generate an animation sequence where the character is steered towards a goal while animation frames are rendered. One limitation of these methods is that goal-space steering is possible for only one set of motion clips performing one type of motion, i.e., walking. For example, in the prior art, there is no way to combine different qualities of motion and no way to transition between different types of motion.
Accordingly, there remains the need in the art for a technique for generating realistic animation sequences using real-time, goal space steering for data-driven character animation that allows for different types of motion and for transitioning between types of motion.